package org.skywork.dal.basic;

// *************************************************************************/
// Charada Soft
// Area de Desarrollo de Sistemas de Información
// *************************************************************************/
// Proyecto : SkyWork Data Access Layer
// Archivo : EntidadDAO.java
// Descripcion : Clase EntidadDAO
// *************************************************************************/
// Version : 2.11.8
// Fecha de Creación: 29 de Diciembre de 2014
// Author : Daniel Andres Castillo Pedroza
// *************************************************************************/

import java.sql.SQLException;
import java.util.ArrayList;
import org.skywork.dal.SkyWorkDAO;
import org.skywork.entitys.basic.Entidad;
import org.sql.commands.exception.DMLException;
import org.sql.commands.mysql.command.Insert;

public class EntidadDAO extends SkyWorkDAO <Entidad> {
    
    // Atributos de la clase EntidadDAO
    
    private final String NAME_TABLE = "ENTIDAD";
    private final int NUMBER_COLUMNS = 5;
    
    // Nombre de Columnas de la tabla Entidad en Base de Datos
    
    public static final String IDENTIFICACION = "IDENTIFICACION";
    public static final String TIPO_ENTIDAD = "TIPO_ENTIDAD";
    
    // Metodos de la clase EntidadDAO
    
    /**
     * Este metodo nos permite ejecutar el registro de una Entidad en la Base de
     * Datos del Sistema. Donde la persona se establece con un objeto <code>Entidad</code>.
     * 
     * @param entidad Objeto que contiene los datos de la Entidad
     * @return Retorna el resultado del proceso en un dato <code>boolean</code>.
     * @throws SQLException Se lanzara esta excepción cuando ocurra errores SQL.
     * @throws DMLException Se lanzara esta excepción cuando ocurra errores DML.
     */
    public static boolean registrar(Entidad entidad) throws SQLException, DMLException {
        return new EntidadDAO().insert(entidad);
    }
    
    // Metodos sobreescritos de la clase EntidadDAO

    @Override
    protected ArrayList generateDataInsert(Entidad object) {
        ArrayList entidadDatos = new ArrayList();
        entidadDatos.add(object.getIdentificacion());
        entidadDatos.add(object.getTipoEntidad());
        entidadDatos.add(object.getFechaRegistro().toString());
        entidadDatos.add(object.getHoraRegistro().toString());
        entidadDatos.add(object.getUsuario().getNombreUsuario());
        
        return entidadDatos; // Datos para Insertar
    }

    @Override
    protected Insert generateInsert() {
        return Insert.creatorCommand(NAME_TABLE,NUMBER_COLUMNS);
    }
}